package yu.com.time.calclator


/**
 * 时间计算器
 * created zpf on 2018/10/23 0023
 * @param T 时间增加返回结果类型
 * @param S 时间间隔计算类型
 */
interface Calculator<T, S> {

    /**
     * 增加时间
     * @param addition 要加上的值
     */
    operator fun plus(addition: Long): T

    /**
     * 减去一个时间,取两个时间的间隔
     * @param subtraction 要减去的值
     */
    operator fun minus(subtraction: S): Long

    /**
     * 增加时间
     * @param addition 要减去的值
     */
    operator fun plus(addition: Int): T = plus(addition.toLong())

    /**
     * 减少时间
     * @param subtraction 要减去的值
     */
    operator fun minus(subtraction: Long): T = plus(-subtraction)

    /**
     * 减少时间
     * @param subtraction 要减去的值
     */
    operator fun minus(subtraction: Int): T = minus(subtraction.toLong())
}